home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_perl.idb / usr / freeware / catman / p_man / cat3 / ExtUtils::MakeMaker.Z / ExtUtils::MakeMaker
Encoding:
Text File  |  1998-10-28  |  48.6 KB  |  1,387 lines

  1.  
  2.  
  3.  
  4.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.       ExtUtils::MakeMaker -    create an extension Makefile
  10.  
  11.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.       use ExtUtils::MakeMaker;
  13.  
  14.       WriteMakefile( ATTRIBUTE => VALUE [, ...] );
  15.  
  16.       which    is really
  17.  
  18.       MM->new(\%att)->flush;
  19.  
  20.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  21.       This utility is designed to write a Makefile for an
  22.       extension module from    a Makefile.PL. It is based on the
  23.       Makefile.SH model provided by    Andy Dougherty and the perl5-
  24.       porters.
  25.  
  26.       It splits the    task of    generating the Makefile    into several
  27.       subroutines that can be individually overridden.  Each
  28.       subroutine returns the text it wishes    to have    written    to the
  29.       Makefile.
  30.  
  31.       MakeMaker is object oriented.    Each directory below the
  32.       current directory that contains a Makefile.PL. Is treated as
  33.       a separate object. This makes    it possible to write an
  34.       unlimited number of Makefiles    with a single invocation of
  35.       _W_r_i_t_e_M_a_k_e_f_i_l_e().
  36.  
  37.       HHHHoooowwww TTTToooo WWWWrrrriiiitttteeee AAAA MMMMaaaakkkkeeeeffffiiiilllleeee....PPPPLLLL
  38.  
  39.       The short answer is: Don't.
  40.  
  41.           Always begin with h2xs.
  42.           Always begin with h2xs!
  43.           ALWAYS BEGIN WITH H2XS!
  44.  
  45.       even if you're not building around a header file, and    even
  46.       if you don't have an XS component.
  47.  
  48.       Run _h_2_x_s(1) before you start thinking    about writing a
  49.       module. For so called    pm-only    modules    that consist of    *.pm
  50.       files    only, h2xs has the -X switch. This will    generate dummy
  51.       files    of all kinds that are useful for the module developer.
  52.  
  53.       The medium answer is:
  54.  
  55.           use ExtUtils::MakeMaker;
  56.           WriteMakefile( NAME => "Foo::Bar"    );
  57.  
  58.       The long answer is the rest of the manpage :-)
  59.  
  60.  
  61.  
  62.  
  63.      Page 1                        (printed 10/23/98)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  71.  
  72.  
  73.  
  74.       DDDDeeeeffffaaaauuuulllltttt MMMMaaaakkkkeeeeffffiiiilllleeee BBBBeeeehhhhaaaavvvviiiioooouuuurrrr
  75.  
  76.       The generated    Makefile enables the user of the extension to
  77.       invoke
  78.  
  79.         perl Makefile.PL # optionally "perl    Makefile.PL verbose"
  80.         make
  81.         make test         # optionally set TEST_VERBOSE=1
  82.         make install     # See below
  83.  
  84.       The Makefile to be produced may be altered by    adding
  85.       arguments of the form    KEY=VALUE. E.g.
  86.  
  87.         perl Makefile.PL PREFIX=/tmp/myperl5
  88.  
  89.       Other    interesting targets in the generated Makefile are
  90.  
  91.         make config        # to check if the Makefile is up-to-date
  92.         make clean        # delete local temp    files (Makefile    gets renamed)
  93.         make realclean  # delete derived files (including ./blib)
  94.         make ci        # check in all the files in    the MANIFEST file
  95.         make dist        # see below    the Distribution Support section
  96.  
  97.  
  98.       mmmmaaaakkkkeeee tttteeeesssstttt
  99.  
  100.       MakeMaker checks for the existence of    a file named _t_e_s_t._p_l
  101.       in the current directory and if it exists it adds commands
  102.       to the test target of    the generated Makefile that will
  103.       execute the script with the proper set of perl -I options.
  104.  
  105.       MakeMaker also checks    for any    files matching _g_l_o_b("t/*.t").
  106.       It will add commands to the test target of the generated
  107.       Makefile that    execute    all matching files via the the
  108.       _T_e_s_t::_H_a_r_n_e_s_s    manpage    module with the    -I switches set
  109.       correctly.
  110.  
  111.       mmmmaaaakkkkeeee tttteeeessssttttddddbbbb
  112.  
  113.       A useful variation of    the above is the target    testdb.    It
  114.       runs the test    under the Perl debugger    (see the _p_e_r_l_d_e_b_u_g
  115.       manpage). If the file    _t_e_s_t._p_l    exists in the current
  116.       directory, it    is used    for the    test.
  117.  
  118.       If you want to debug some other testfile, set    TEST_FILE
  119.       variable thusly:
  120.  
  121.         make testdb    TEST_FILE=t/mytest.t
  122.  
  123.       By default the debugger is called using -d option to perl.
  124.       If you want to specify some other option, set    TESTDB_SW
  125.       variable:
  126.  
  127.  
  128.  
  129.      Page 2                        (printed 10/23/98)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  137.  
  138.  
  139.  
  140.         make testdb    TESTDB_SW=-Dx
  141.  
  142.  
  143.       mmmmaaaakkkkeeee iiiinnnnssssttttaaaallllllll
  144.  
  145.       make alone puts all relevant files into directories that are
  146.       named    by the macros INST_LIB,    INST_ARCHLIB, INST_SCRIPT,
  147.       INST_MAN1DIR,    and INST_MAN3DIR. All these default to
  148.       something below ./blib if you    are _n_o_t    building below the
  149.       perl source directory. If you    _a_r_e building below the perl
  150.       source, INST_LIB and INST_ARCHLIB default to
  151.        ../../lib, and INST_SCRIPT is not defined.
  152.  
  153.       The _i_n_s_t_a_l_l target of    the generated Makefile copies the
  154.       files    found below each of the    INST_* directories to their
  155.       INSTALL* counterparts. Which counterparts are    chosen depends
  156.       on the setting of INSTALLDIRS    according to the following
  157.       table:
  158.  
  159.                      INSTALLDIRS set to
  160.                   perl            site
  161.  
  162.           INST_ARCHLIB    INSTALLARCHLIB    INSTALLSITEARCH
  163.           INST_LIB          INSTALLPRIVLIB    INSTALLSITELIB
  164.           INST_BIN            INSTALLBIN
  165.           INST_SCRIPT           INSTALLSCRIPT
  166.           INST_MAN1DIR           INSTALLMAN1DIR
  167.           INST_MAN3DIR           INSTALLMAN3DIR
  168.  
  169.       The INSTALL... macros    in turn    default    to their %Config
  170.       ($Config{installprivlib}, $Config{installarchlib}, etc.)
  171.       counterparts.
  172.  
  173.       You can check    the values of these variables on your system
  174.       with
  175.  
  176.           perl '-V:install.*'
  177.  
  178.       And to check the sequence in which the library directories
  179.       are searched by perl,    run
  180.  
  181.           perl -le 'print join $/, @INC'
  182.  
  183.  
  184.       PPPPRRRREEEEFFFFIIIIXXXX aaaannnndddd LLLLIIIIBBBB aaaattttttttrrrriiiibbbbuuuutttteeee
  185.  
  186.       PREFIX and LIB can be    used to    set several INSTALL*
  187.       attributes in    one go.    The quickest way to install a module
  188.       in a non-standard place might    be
  189.  
  190.           perl Makefile.PL LIB=~/lib
  191.  
  192.  
  193.  
  194.  
  195.      Page 3                        (printed 10/23/98)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  203.  
  204.  
  205.  
  206.       This will install the    module's architecture-independent
  207.       files    into ~/lib, the    architecture-dependent files into
  208.       ~/lib/$archname/auto.
  209.  
  210.       Another way to specify many INSTALL directories with a
  211.       single parameter is PREFIX.
  212.  
  213.           perl Makefile.PL PREFIX=~
  214.  
  215.       This will replace the    string specified by $Config{prefix} in
  216.       all $Config{install*}    values.
  217.  
  218.       Note,    that in    both cases the tilde expansion is done by
  219.       MakeMaker, not by perl by default, nor by make. Conflicts
  220.       between parmeters LIB, PREFIX    and the    various    INSTALL*
  221.       arguments are    resolved so that XXX
  222.  
  223.       If the user has superuser privileges,    and is not working on
  224.       AFS (Andrew File System) or relatives, then the defaults for
  225.       INSTALLPRIVLIB, INSTALLARCHLIB, INSTALLSCRIPT, etc. will be
  226.       appropriate, and this    incantation will be the    best:
  227.  
  228.           perl Makefile.PL;    make; make test
  229.           make install
  230.  
  231.       make install per default writes some documentation of    what
  232.       has been done    into the file $(INSTALLARCHLIB)/perllocal.pod.
  233.       This feature can be bypassed by calling make pure_install.
  234.  
  235.       AAAAFFFFSSSS uuuusssseeeerrrrssss
  236.  
  237.       will have to specify the installation    directories as these
  238.       most probably    have changed since perl    itself has been
  239.       installed. They will have to do this by calling
  240.  
  241.           perl Makefile.PL INSTALLSITELIB=/afs/here/today \
  242.           INSTALLSCRIPT=/afs/there/now INSTALLMAN3DIR=/afs/for/manpages
  243.           make
  244.  
  245.       Be careful to    repeat this procedure every time you recompile
  246.       an extension,    unless you are sure the    AFS installation
  247.       directories are still    valid.
  248.  
  249.       SSSSttttaaaattttiiiicccc LLLLiiiinnnnkkkkiiiinnnngggg ooooffff aaaa nnnneeeewwww PPPPeeeerrrrllll BBBBiiiinnnnaaaarrrryyyy
  250.  
  251.       An extension that is built with the above steps is ready to
  252.       use on systems supporting dynamic loading. On    systems    that
  253.       do not support dynamic loading, any newly created extension
  254.       has to be linked together with the available resources.
  255.       MakeMaker supports the linking process by creating
  256.       appropriate targets in the Makefile whenever an extension is
  257.       built. You can invoke    the corresponding section of the
  258.  
  259.  
  260.  
  261.      Page 4                        (printed 10/23/98)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  269.  
  270.  
  271.  
  272.       makefile with
  273.  
  274.           make perl
  275.  
  276.       That produces    a new perl binary in the current directory
  277.       with all extensions linked in    that can be found in
  278.       INST_ARCHLIB , SITELIBEXP, and PERL_ARCHLIB. To do that,
  279.       MakeMaker writes a new Makefile, on UNIX, this is called
  280.       Makefile.aperl (may be system    dependent). If you want    to
  281.       force    the creation of    a new perl, it is recommended, that
  282.       you delete this Makefile.aperl, so the directories are
  283.       searched-through for linkable    libraries again.
  284.  
  285.       The binary can be installed into the directory where perl
  286.       normally resides on your machine with
  287.  
  288.           make inst_perl
  289.  
  290.       To produce a perl binary with    a different name than perl,
  291.       either say
  292.  
  293.           perl Makefile.PL MAP_TARGET=myperl
  294.           make myperl
  295.           make inst_perl
  296.  
  297.       or say
  298.  
  299.           perl Makefile.PL
  300.           make myperl MAP_TARGET=myperl
  301.           make inst_perl MAP_TARGET=myperl
  302.  
  303.       In any case you will be prompted with    the correct invocation
  304.       of the inst_perl target that installs    the new    binary into
  305.       INSTALLBIN.
  306.  
  307.       make inst_perl per default writes some documentation of what
  308.       has been done    into the file $(INSTALLARCHLIB)/perllocal.pod.
  309.       This can be bypassed by calling make pure_inst_perl.
  310.  
  311.       Warning: the inst_perl: target will most probably overwrite
  312.       your existing    perl binary. Use with care!
  313.  
  314.       Sometimes you    might want to build a statically linked    perl
  315.       although your    system supports    dynamic    loading. In this case
  316.       you may explicitly set the linktype with the invocation of
  317.       the Makefile.PL or make:
  318.  
  319.           perl Makefile.PL LINKTYPE=static      # recommended
  320.  
  321.       or
  322.  
  323.           make LINKTYPE=static          # works on most systems
  324.  
  325.  
  326.  
  327.      Page 5                        (printed 10/23/98)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  335.  
  336.  
  337.  
  338.       DDDDeeeetttteeeerrrrmmmmiiiinnnnaaaattttiiiioooonnnn    ooooffff PPPPeeeerrrrllll    LLLLiiiibbbbrrrraaaarrrryyyy    aaaannnndddd IIIInnnnssssttttaaaallllllllaaaattttiiiioooonnnn LLLLooooccccaaaattttiiiioooonnnnssss
  339.  
  340.       MakeMaker needs to know, or to guess,    where certain things
  341.       are located.    Especially INST_LIB and    INST_ARCHLIB (where to
  342.       put the files    during the _m_a_k_e(1) run), PERL_LIB and
  343.       PERL_ARCHLIB (where to read existing modules from), and
  344.       PERL_INC (header files and libperl*.*).
  345.  
  346.       Extensions may be built either using the contents of the
  347.       perl source directory    tree or    from the installed perl
  348.       library. The recommended way is to build extensions after
  349.       you have run 'make install' on perl itself. You can do that
  350.       in any directory on your hard    disk that is not below the
  351.       perl source tree. The    support    for extensions below the ext
  352.       directory of the perl    distribution is    only good for the
  353.       standard extensions that come    with perl.
  354.  
  355.       If an    extension is being built below the ext/    directory of
  356.       the perl source then MakeMaker will set PERL_SRC
  357.       automatically    (e.g., ../..).    If PERL_SRC is defined and the
  358.       extension is recognized as a standard    extension, then    other
  359.       variables default to the following:
  360.  
  361.         PERL_INC     = PERL_SRC
  362.         PERL_LIB     = PERL_SRC/lib
  363.         PERL_ARCHLIB = PERL_SRC/lib
  364.         INST_LIB     = PERL_LIB
  365.         INST_ARCHLIB = PERL_ARCHLIB
  366.  
  367.       If an    extension is being built away from the perl source
  368.       then MakeMaker will leave PERL_SRC undefined and default to
  369.       using    the installed copy of the perl library.    The other
  370.       variables default to the following:
  371.  
  372.         PERL_INC     = $archlibexp/CORE
  373.         PERL_LIB     = $privlibexp
  374.         PERL_ARCHLIB = $archlibexp
  375.         INST_LIB     = ./blib/lib
  376.         INST_ARCHLIB = ./blib/arch
  377.  
  378.       If perl has not yet been installed then PERL_SRC can be
  379.       defined on the command line as shown in the previous
  380.       section.
  381.  
  382.       WWWWhhhhiiiicccchhhh    aaaarrrrcccchhhhiiiitttteeeeccccttttuuuurrrreeee ddddeeeeppppeeeennnnddddeeeennnntttt ddddiiiirrrreeeeccccttttoooorrrryyyy????
  383.  
  384.       If you don't want to keep the    defaults for the INSTALL*
  385.       macros, MakeMaker helps you to minimize the typing needed:
  386.       the usual relationship between INSTALLPRIVLIB    and
  387.       INSTALLARCHLIB is determined by Configure at perl
  388.       compilation time. MakeMaker supports the user    who sets
  389.       INSTALLPRIVLIB. If INSTALLPRIVLIB is set, but    INSTALLARCHLIB
  390.  
  391.  
  392.  
  393.      Page 6                        (printed 10/23/98)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  401.  
  402.  
  403.  
  404.       not, then MakeMaker defaults the latter to be    the same
  405.       subdirectory of INSTALLPRIVLIB as Configure decided for the
  406.       counterparts in %Config , otherwise it defaults to
  407.       INSTALLPRIVLIB. The same relationship    holds for
  408.       INSTALLSITELIB and INSTALLSITEARCH.
  409.  
  410.       MakeMaker gives you much more    freedom    than needed to
  411.       configure internal variables and get different results. It
  412.       is worth to mention, that _m_a_k_e(1) also lets you configure
  413.       most of the variables    that are used in the Makefile. But in
  414.       the majority of situations this will not be necessary, and
  415.       should only be done, if the author of    a package recommends
  416.       it (or you know what you're doing).
  417.  
  418.       UUUUssssiiiinnnngggg    AAAAttttttttrrrriiiibbbbuuuutttteeeessss aaaannnndddd PPPPaaaarrrraaaammmmeeeetttteeeerrrrssss
  419.  
  420.       The following    attributes can be specified as arguments to
  421.       _W_r_i_t_e_M_a_k_e_f_i_l_e() or as    NAME=VALUE pairs on the    command    line:
  422.  
  423.       C Ref    to array of *.c    file names. Initialised    from a
  424.         directory scan and the values portion of the XS attribute
  425.         hash. This is not currently    used by    MakeMaker but may be
  426.         handy in Makefile.PLs.
  427.  
  428.       CCFLAGS
  429.         String that    will be    included in the    compiler call command
  430.         line between the arguments INC and OPTIMIZE.
  431.  
  432.       CONFIG
  433.         Arrayref. E.g. [_q_w(archname    manext)] defines ARCHNAME &
  434.         MANEXT from    config.sh. MakeMaker will add to CONFIG    the
  435.         following values anyway:  ar cc cccdlflags ccdlflags dlext
  436.         dlsrc ld lddlflags ldflags libc lib_ext obj_ext ranlib
  437.         sitelibexp sitearchexp so
  438.  
  439.       CONFIGURE
  440.         CODE reference. The    subroutine should return a hash
  441.         reference. The hash    may contain further attributes,    e.g.
  442.         {LIBS => ...}, that    have to    be determined by some
  443.         evaluation method.
  444.  
  445.       DEFINE
  446.         Something like "-DHAVE_UNISTD_H"
  447.  
  448.       DIR
  449.         Ref    to array of subdirectories containing Makefile.PLs
  450.         e.g. [ 'sdbm' ] in ext/SDBM_File
  451.  
  452.       DISTNAME
  453.         Your name for distributing the package (by tar file). This
  454.         defaults to    NAME above.
  455.  
  456.  
  457.  
  458.  
  459.      Page 7                        (printed 10/23/98)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  467.  
  468.  
  469.  
  470.       DL_FUNCS
  471.         Hashref of symbol names for    routines to be made available
  472.         as universal symbols.  Each    key/value pair consists    of the
  473.         package name and an    array of routine names in that
  474.         package.  Used only    under AIX (export lists) and VMS
  475.         (linker options) at    present.  The routine names supplied
  476.         will be expanded in    the same way as    XSUB names are
  477.         expanded by    the _X_S() macro.     Defaults to
  478.  
  479.           {"$(NAME)" => ["boot_$(NAME)" ] }
  480.  
  481.         e.g.
  482.  
  483.           {"RPC" =>    [qw( boot_rpcb rpcb_gettime getnetconfigent )],
  484.            "NetconfigPtr" => [ 'DESTROY'] }
  485.  
  486.  
  487.       DL_VARS
  488.         Array of symbol names for variables    to be made available
  489.         as universal symbols.  Used    only under AIX (export lists)
  490.         and    VMS (linker options) at    present.  Defaults to [].
  491.         (e.g. [ _q_w(    Foo_version Foo_numstreams Foo_tree ) ])
  492.  
  493.       EXCLUDE_EXT
  494.         Array of extension names to    exclude    when doing a static
  495.         build.  This is ignored if INCLUDE_EXT is present.
  496.         Consult INCLUDE_EXT    for more details.  (e.g.  [ _q_w(    Socket
  497.         POSIX ) ] )
  498.  
  499.         This attribute may be most useful when specified as    a
  500.         string on the commandline:    perl Makefile.PL
  501.         EXCLUDE_EXT='Socket    Safe'
  502.  
  503.       EXE_FILES
  504.         Ref    to array of executable files. The files    will be    copied
  505.         to the INST_SCRIPT directory. Make realclean will delete
  506.         them from there again.
  507.  
  508.       NO_VC
  509.         In general any generated Makefile checks for the current
  510.         version of MakeMaker and the version the Makefile was
  511.         built under. If NO_VC is set, the version check is
  512.         neglected. Do not write this into your Makefile.PL,    use it
  513.         interactively instead.
  514.  
  515.       FIRST_MAKEFILE
  516.         The    name of    the Makefile to    be produced. Defaults to the
  517.         contents of    MAKEFILE, but can be overridden. This is used
  518.         for    the second Makefile that will be produced for the
  519.         MAP_TARGET.
  520.  
  521.  
  522.  
  523.  
  524.  
  525.      Page 8                        (printed 10/23/98)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  533.  
  534.  
  535.  
  536.       FULLPERL
  537.         Perl binary    able to    run this extension.
  538.  
  539.       H Ref    to array of *.h    file names. Similar to C.
  540.  
  541.       IMPORTS
  542.         IMPORTS is only used on OS/2.
  543.  
  544.       INC
  545.         Include file dirs eg: "-I/usr/5include -I/path/to/inc"
  546.  
  547.       INCLUDE_EXT
  548.         Array of extension names to    be included when doing a
  549.         static build.  MakeMaker will normally build with all of
  550.         the    installed extensions when doing    a static build,    and
  551.         that is usually the    desired    behavior.  If INCLUDE_EXT is
  552.         present then MakeMaker will    build only with    those
  553.         extensions which are explicitly mentioned. (e.g.  [    _q_w(
  554.         Socket POSIX ) ])
  555.  
  556.         It is not necessary    to mention DynaLoader or the current
  557.         extension when filling in INCLUDE_EXT.  If the INCLUDE_EXT
  558.         is mentioned but is    empty then only    DynaLoader and the
  559.         current extension will be included in the build.
  560.  
  561.         This attribute may be most useful when specified as    a
  562.         string on the commandline:    perl Makefile.PL
  563.         INCLUDE_EXT='POSIX Socket Devel::Peek'
  564.  
  565.       INSTALLARCHLIB
  566.         Used by 'make install', which copies files from
  567.         INST_ARCHLIB to this directory if INSTALLDIRS is set to
  568.         perl.
  569.  
  570.       INSTALLBIN
  571.         Directory to install binary    files (e.g. tkperl) into.
  572.  
  573.       INSTALLDIRS
  574.         Determines which of    the two    sets of    installation
  575.         directories    to choose: installprivlib and installarchlib
  576.         versus installsitelib and installsitearch. The first pair
  577.         is chosen with INSTALLDIRS=perl, the second    with
  578.         INSTALLDIRS=site. Default is site.
  579.  
  580.       INSTALLMAN1DIR
  581.         This directory gets    the man    pages at 'make install'    time.
  582.         Defaults to    $Config{installman1dir}.
  583.  
  584.       INSTALLMAN3DIR
  585.         This directory gets    the man    pages at 'make install'    time.
  586.         Defaults to    $Config{installman3dir}.
  587.  
  588.  
  589.  
  590.  
  591.      Page 9                        (printed 10/23/98)
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  599.  
  600.  
  601.  
  602.       INSTALLPRIVLIB
  603.         Used by 'make install', which copies files from INST_LIB
  604.         to this directory if INSTALLDIRS is    set to perl.
  605.  
  606.       INSTALLSCRIPT
  607.         Used by 'make install' which copies    files from INST_SCRIPT
  608.         to this directory.
  609.  
  610.       INSTALLSITELIB
  611.         Used by 'make install', which copies files from INST_LIB
  612.         to this directory if INSTALLDIRS is    set to site (default).
  613.  
  614.       INSTALLSITEARCH
  615.         Used by 'make install', which copies files from
  616.         INST_ARCHLIB to this directory if INSTALLDIRS is set to
  617.         site (default).
  618.  
  619.       INST_ARCHLIB
  620.         Same as INST_LIB for architecture dependent    files.
  621.  
  622.       INST_BIN
  623.         Directory to put real binary files during 'make'. These
  624.         will be copied to INSTALLBIN during    'make install'
  625.  
  626.       INST_EXE
  627.         Old    name for INST_SCRIPT. Deprecated. Please use
  628.         INST_SCRIPT    if you need to use it.
  629.  
  630.       INST_LIB
  631.         Directory where we put library files of this extension
  632.         while building it.
  633.  
  634.       INST_MAN1DIR
  635.         Directory to hold the man pages at 'make' time
  636.  
  637.       INST_MAN3DIR
  638.         Directory to hold the man pages at 'make' time
  639.  
  640.       INST_SCRIPT
  641.         Directory, where executable    files should be    installed
  642.         during 'make'. Defaults to "./blib/bin", just to have a
  643.         dummy location during testing. make    install    will copy the
  644.         files in INST_SCRIPT to INSTALLSCRIPT.
  645.  
  646.       LDFROM
  647.         defaults to    "$(OBJECT)" and    is used    in the ld command to
  648.         specify what files to link/load from (also see dynamic_lib
  649.         below for how to specify ld    flags)
  650.  
  651.       LIBPERL_A
  652.         The    filename of the    perllibrary that will be used together
  653.         with this extension. Defaults to libperl.a.
  654.  
  655.  
  656.  
  657.      Page 10                        (printed 10/23/98)
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  665.  
  666.  
  667.  
  668.       LIB
  669.         LIB    can only be set    at perl    Makefile.PL time. It has the
  670.         effect of setting both INSTALLPRIVLIB and INSTALLSITELIB
  671.         to that value regardless any
  672.  
  673.       LIBS
  674.         An anonymous array of alternative library specifications
  675.         to be searched for (in order) until    at least one library
  676.         is found. E.g.
  677.  
  678.           'LIBS' =>    ["-lgdbm", "-ldbm -lfoo", "-L/path -ldbm.nfs"]
  679.  
  680.         Mind, that any element of the array    contains a complete
  681.         set    of arguments for the ld    command. So do not specify
  682.  
  683.           'LIBS' =>    ["-ltcl", "-ltk", "-lX11"]
  684.  
  685.         See    ODBM_File/Makefile.PL for an example, where an array
  686.         is needed. If you specify a    scalar as in
  687.  
  688.           'LIBS' =>    "-ltcl -ltk -lX11"
  689.  
  690.         MakeMaker will turn    it into    an array with one element.
  691.  
  692.       LINKTYPE
  693.         'static' or    'dynamic' (default unless usedl=undef in
  694.         config.sh).    Should only be used to force static linking
  695.         (also see linkext below).
  696.  
  697.       MAKEAPERL
  698.         Boolean which tells    MakeMaker, that    it should include the
  699.         rules to make a perl. This is handled automatically    as a
  700.         switch by MakeMaker. The user normally does    not need it.
  701.  
  702.       MAKEFILE
  703.         The    name of    the Makefile to    be produced.
  704.  
  705.       MAN1PODS
  706.         Hashref of pod-containing files. MakeMaker will default
  707.         this to all    EXE_FILES files    that include POD directives.
  708.         The    files listed here will be converted to man pages and
  709.         installed as was requested at Configure time.
  710.  
  711.       MAN3PODS
  712.         Hashref of .pm and .pod files. MakeMaker will default this
  713.         to all
  714.          .pod and any .pm files that include POD directives. The
  715.         files listed here will be converted    to man pages and
  716.         installed as was requested at Configure time.
  717.  
  718.       MAP_TARGET
  719.         If it is intended, that a new perl binary be produced,
  720.  
  721.  
  722.  
  723.      Page 11                        (printed 10/23/98)
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  731.  
  732.  
  733.  
  734.         this variable may hold a name for that binary. Defaults to
  735.         perl
  736.  
  737.       MYEXTLIB
  738.         If the extension links to a    library    that it    builds set
  739.         this to the    name of    the library (see SDBM_File)
  740.  
  741.       NAME
  742.         Perl module    name for this extension    (DBD::Oracle). This
  743.         will default to the    directory name but should be
  744.         explicitly defined in the Makefile.PL.
  745.  
  746.       NEEDS_LINKING
  747.         MakeMaker will figure out, if an extension contains
  748.         linkable code anywhere down    the directory tree, and    will
  749.         set    this variable accordingly, but you can speed it    up a
  750.         very little    bit, if    you define this    boolean    variable
  751.         yourself.
  752.  
  753.       NOECHO
  754.         Defaults to    @. By setting it to an empty string you    can
  755.         generate a Makefile    that echos all commands. Mainly    used
  756.         in debugging MakeMaker itself.
  757.  
  758.       NORECURS
  759.         Boolean.  Attribute    to inhibit descending into
  760.         subdirectories.
  761.  
  762.       OBJECT
  763.         List of object files, defaults to '$(BASEEXT)$(OBJ_EXT)',
  764.         but    can be a long string containing    all object files, e.g.
  765.         "tkpBind.o tkpButton.o tkpCanvas.o"
  766.  
  767.       OPTIMIZE
  768.         Defaults to    -O. Set    it to -g to turn debugging on. The
  769.         flag is passed to subdirectory makes.
  770.  
  771.       PERL
  772.         Perl binary    for tasks that can be done by miniperl
  773.  
  774.       PERLMAINCC
  775.         The    call to    the program that is able to compile
  776.         perlmain.c.    Defaults to $(CC).
  777.  
  778.       PERL_ARCHLIB
  779.         Same as above for architecture dependent files
  780.  
  781.       PERL_LIB
  782.         Directory containing the Perl library to use.
  783.  
  784.       PERL_SRC
  785.         Directory containing the Perl source code (use of this
  786.  
  787.  
  788.  
  789.      Page 12                        (printed 10/23/98)
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  797.  
  798.  
  799.  
  800.         should be avoided, it may be undefined)
  801.  
  802.       PERM_RW
  803.         Desired Permission for read/writable files.    Defaults to
  804.         644.  See also the perm_rw entry in    the _M_M__U_n_i_x manpage.
  805.  
  806.       PERM_RWX
  807.         Desired permission for executable files. Defaults to 755.
  808.         See    also the perm_rwx entry    in the _M_M__U_n_i_x manpage.
  809.  
  810.       PL_FILES
  811.         Ref    to hash    of files to be processed as perl programs.
  812.         MakeMaker will default to any found    *.PL file (except
  813.         Makefile.PL) being keys and    the basename of    the file being
  814.         the    value. E.g.
  815.  
  816.           {'foobar.PL' => 'foobar'}
  817.  
  818.         The    *.PL files are expected    to produce output to the
  819.         target files themselves.
  820.  
  821.       PM
  822.         Hashref of .pm files and *.pl files    to be installed.  e.g.
  823.  
  824.           {'name_of_file.pm' => '$(INST_LIBDIR)/install_as.pm'}
  825.  
  826.         By default this will include *.pm and *.pl and the files
  827.         found in the PMLIBDIRS directories.     Defining PM in    the
  828.         Makefile.PL    will override PMLIBDIRS.
  829.  
  830.       PMLIBDIRS
  831.         Ref    to array of subdirectories containing library files.
  832.         Defaults to    [ 'lib', $(BASEEXT) ]. The directories will be
  833.         scanned and    _a_n_y files they contain will be installed in
  834.         the    corresponding location in the library.    A _l_i_b_s_c_a_n()
  835.         method can be used to alter    the behaviour.    Defining PM in
  836.         the    Makefile.PL will override PMLIBDIRS.
  837.  
  838.       PREFIX
  839.         Can    be used    to set the three INSTALL* attributes in    one go
  840.         (except for    probably INSTALLMAN1DIR, if it is not below
  841.         PREFIX according to    %Config).  They    will have PREFIX as a
  842.         common directory node and will branch from that node into
  843.         lib/, lib/ARCHNAME or whatever Configure decided at    the
  844.         build time of your perl (unless you    override one of    them,
  845.         of course).
  846.  
  847.       PREREQ_PM
  848.         Hashref: Names of modules that need    to be available    to run
  849.         this extension (e.g. Fcntl for SDBM_File) are the keys of
  850.         the    hash and the desired version is    the value. If the
  851.         required version number is 0, we only check    if any version
  852.  
  853.  
  854.  
  855.      Page 13                        (printed 10/23/98)
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  863.  
  864.  
  865.  
  866.         is installed already.
  867.  
  868.       SKIP
  869.         Arryref. E.g. [_q_w(name1 name2)] skip (do not write)
  870.         sections of    the Makefile. Caution! Do not use the SKIP
  871.         attribute for the neglectible speedup. It may seriously
  872.         damage the resulting Makefile. Only    use it,    if you really
  873.         need it.
  874.  
  875.       TYPEMAPS
  876.         Ref    to array of typemap file names.     Use this when the
  877.         typemaps are in some directory other than the current
  878.         directory or when they are not named ttttyyyyppppeeeemmmmaaaapppp.  The last
  879.         typemap in the list    takes precedence.  A typemap in    the
  880.         current directory has highest precedence, even if it isn't
  881.         listed in TYPEMAPS.     The default system typemap has    lowest
  882.         precedence.
  883.  
  884.       VERSION
  885.         Your version number    for distributing the package.  This
  886.         defaults to    0.1.
  887.  
  888.       VERSION_FROM
  889.         Instead of specifying the VERSION in the Makefile.PL you
  890.         can    let MakeMaker parse a file to determine    the version
  891.         number. The    parsing    routine    requires that the file named
  892.         by VERSION_FROM contains one single    line to    compute    the
  893.         version number. The    first line in the file that contains
  894.         the    regular    expression
  895.  
  896.         /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/
  897.  
  898.         will be evaluated with _e_v_a_l() and the value    of the named
  899.         variable aaaafffftttteeeerrrr the _e_v_a_l() will be assigned to the VERSION
  900.         attribute of the MakeMaker object. The following lines
  901.         will be parsed o.k.:
  902.  
  903.         $VERSION = '1.00';
  904.         *VERSION = \'1.01';
  905.         ( $VERSION ) = '$Revision: 1.222 $ ' =~    /\$Revision:\s+([^\s]+)/;
  906.         $FOO::VERSION =    '1.10';
  907.         *FOO::VERSION =    \'1.11';
  908.  
  909.         but    these will fail:
  910.  
  911.         my $VERSION = '1.01';
  912.         local $VERSION = '1.02';
  913.         local $FOO::VERSION = '1.30';
  914.  
  915.         The    file named in VERSION_FROM is not added    as a
  916.         dependency to Makefile. This is not    really correct,    but it
  917.         would be a major pain during development to    have to
  918.  
  919.  
  920.  
  921.      Page 14                        (printed 10/23/98)
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  929.  
  930.  
  931.  
  932.         rewrite the    Makefile for any smallish change in that file.
  933.         If you want    to make    sure that the Makefile contains    the
  934.         correct VERSION macro after    any change of the file,    you
  935.         would have to do something like
  936.  
  937.         depend => { Makefile =>    '$(VERSION_FROM)' }
  938.  
  939.         See    attribute depend below.
  940.  
  941.       XS
  942.         Hashref of .xs files. MakeMaker will default this.    e.g.
  943.  
  944.           {'name_of_file.xs' => 'name_of_file.c'}
  945.  
  946.         The    .c files will automatically be included    in the list of
  947.         files deleted by a make clean.
  948.  
  949.       XSOPT
  950.         String of options to pass to xsubpp.  This might include
  951.         -C++ or -extern.  Do not include typemaps here; the
  952.         TYPEMAP parameter exists for that purpose.
  953.  
  954.       XSPROTOARG
  955.         May    be set to an empty string, which is identical to
  956.         -prototypes, or -noprototypes. See the xsubpp
  957.         documentation for details. MakeMaker defaults to the empty
  958.         string.
  959.  
  960.       XS_VERSION
  961.         Your version number    for the    .xs file of this package.
  962.         This defaults to the value of the VERSION attribute.
  963.  
  964.       AAAAddddddddiiiittttiiiioooonnnnaaaallll lllloooowwwweeeerrrrccccaaaasssseeee aaaattttttttrrrriiiibbbbuuuutttteeeessss
  965.  
  966.       can be used to pass parameters to the    methods    which
  967.       implement that part of the Makefile.
  968.  
  969.       clean
  970.  
  971.           {FILES =>    "*.xyz foo"}
  972.  
  973.  
  974.       depend
  975.  
  976.           {ANY_TARGET => ANY_DEPENDECY, ...}
  977.  
  978.  
  979.       dist
  980.  
  981.           {TARFLAGS    => 'cvfF', COMPRESS => 'gzip', SUFFIX => '.gz',
  982.           SHAR => 'shar -m', DIST_CP => 'ln', ZIP => '/bin/zip',
  983.           ZIPFLAGS => '-rl', DIST_DEFAULT => 'private tardist' }
  984.  
  985.  
  986.  
  987.      Page 15                        (printed 10/23/98)
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  995.  
  996.  
  997.  
  998.         If you specify COMPRESS, then SUFFIX should    also be
  999.         altered, as    it is needed to    tell make the target file of
  1000.         the    compression. Setting DIST_CP to    ln can be useful, if
  1001.         you    need to    preserve the timestamps    on your    files. DIST_CP
  1002.         can    take the values    'cp', which copies the file, 'ln',
  1003.         which links    the file, and 'best' which copies symbolic
  1004.         links and links the    rest. Default is 'best'.
  1005.  
  1006.       dynamic_lib
  1007.  
  1008.           {ARMAYBE => 'ar',    OTHERLDFLAGS =>    '...', INST_DYNAMIC_DEP    => '...'}
  1009.  
  1010.  
  1011.       installpm
  1012.         Deprecated as of MakeMaker 5.23. See the pm_to_blib    entry
  1013.         in the _E_x_t_U_t_i_l_s::_M_M__U_n_i_x manpage.
  1014.  
  1015.       linkext
  1016.  
  1017.           {LINKTYPE    => 'static', 'dynamic' or ''}
  1018.  
  1019.         NB:    Extensions that    have nothing but *.pm files had    to say
  1020.  
  1021.           {LINKTYPE    => ''}
  1022.  
  1023.         with Pre-5.0 MakeMakers. Since version 5.00    of MakeMaker
  1024.         such a line    can be deleted safely. MakeMaker recognizes,
  1025.         when there's nothing to be linked.
  1026.  
  1027.       macro
  1028.  
  1029.           {ANY_MACRO => ANY_VALUE, ...}
  1030.  
  1031.  
  1032.       realclean
  1033.  
  1034.           {FILES =>    '$(INST_ARCHAUTODIR)/*.xyz'}
  1035.  
  1036.  
  1037.       tool_autosplit
  1038.  
  1039.           {MAXLEN =E<gt> 8}
  1040.  
  1041.  
  1042.       OOOOvvvveeeerrrrrrrriiiiddddiiiinnnngggg MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr MMMMeeeetttthhhhooooddddssss
  1043.  
  1044.       If you cannot    achieve    the desired Makefile behaviour by
  1045.       specifying attributes    you may    define private subroutines in
  1046.       the Makefile.PL.  Each subroutines returns the text it
  1047.       wishes to have written to the    Makefile. To override a
  1048.       section of the Makefile you can either say:
  1049.  
  1050.  
  1051.  
  1052.  
  1053.      Page 16                        (printed 10/23/98)
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  1061.  
  1062.  
  1063.  
  1064.           sub MY::c_o {    "new literal text" }
  1065.  
  1066.       or you can edit the default by saying    something like:
  1067.  
  1068.           sub MY::c_o {
  1069.               package MY; # so that "SUPER" works right
  1070.               my $inherited = shift->SUPER::c_o(@_);
  1071.               $inherited =~ s/old text/new text/;
  1072.               $inherited;
  1073.           }
  1074.  
  1075.       If you are running experiments with embedding    perl as    a
  1076.       library into other applications, you might find MakeMaker is
  1077.       not sufficient. You'd    better have a look at ExtUtils::Embed
  1078.       which    is a collection    of utilities for embedding.
  1079.  
  1080.       If you still need a different    solution, try to develop
  1081.       another subroutine that fits your needs and submit the diffs
  1082.       to _p_e_r_l_5-_p_o_r_t_e_r_s@_p_e_r_l._o_r_g or _c_o_m_p._l_a_n_g._p_e_r_l._m_o_d_e_r_a_t_e_d    as
  1083.       appropriate.
  1084.  
  1085.       For a    complete description of    all MakeMaker methods see the
  1086.       _E_x_t_U_t_i_l_s::_M_M__U_n_i_x manpage.
  1087.  
  1088.       Here is a simple example of how to add a new target to the
  1089.       generated Makefile:
  1090.  
  1091.           sub MY::postamble    {
  1092.           '
  1093.           $(MYEXTLIB): sdbm/Makefile
  1094.               cd sdbm && $(MAKE) all
  1095.           ';
  1096.           }
  1097.  
  1098.  
  1099.       HHHHiiiinnnnttttssssffffiiiilllleeee ssssuuuuppppppppoooorrrrtttt
  1100.  
  1101.       MakeMaker.pm uses the    architecture specific information from
  1102.       Config.pm. In    addition it evaluates architecture specific
  1103.       hints    files in a hints/ directory. The hints files are
  1104.       expected to be named like their counterparts in
  1105.       PERL_SRC/hints, but with an .pl file name extension (eg.
  1106.       next_3_2.pl).    They are simply    evaled by MakeMaker within the
  1107.       _W_r_i_t_e_M_a_k_e_f_i_l_e() subroutine, and can be used to execute
  1108.       commands as well as to include special variables. The    rules
  1109.       which    hintsfile is chosen are    the same as in Configure.
  1110.  
  1111.       The hintsfile    is _e_v_a_l()ed immediately    after the arguments
  1112.       given    to WriteMakefile are stuffed into a hash reference
  1113.       $self    but before this    reference becomes blessed. So if you
  1114.       want to do the equivalent to override    or create an attribute
  1115.       you would say    something like
  1116.  
  1117.  
  1118.  
  1119.      Page 17                        (printed 10/23/98)
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  1127.  
  1128.  
  1129.  
  1130.           $self->{LIBS} = ['-ldbm -lucb -lc'];
  1131.  
  1132.  
  1133.       DDDDiiiissssttttrrrriiiibbbbuuuuttttiiiioooonnnn SSSSuuuuppppppppoooorrrrtttt
  1134.  
  1135.       For authors of extensions MakeMaker provides several
  1136.       Makefile targets. Most of the    support    comes from the
  1137.       ExtUtils::Manifest module, where additional documentation
  1138.       can be found.
  1139.  
  1140.       make distcheck
  1141.           reports which files are below the    build directory    but
  1142.           not in the MANIFEST file and vice    versa. (See
  1143.           _E_x_t_U_t_i_l_s::_M_a_n_i_f_e_s_t::_f_u_l_l_c_h_e_c_k() for details)
  1144.  
  1145.       make skipcheck
  1146.           reports which files are skipped due to the entries in
  1147.           the MANIFEST.SKIP    file (See
  1148.           _E_x_t_U_t_i_l_s::_M_a_n_i_f_e_s_t::_s_k_i_p_c_h_e_c_k() for details)
  1149.  
  1150.       make distclean
  1151.           does a realclean first and then the distcheck. Note that
  1152.           this is not needed to build a new    distribution as    long
  1153.           as you are sure, that the    MANIFEST file is ok.
  1154.  
  1155.       make manifest
  1156.           rewrites the MANIFEST file, adding all remaining files
  1157.           found (See _E_x_t_U_t_i_l_s::_M_a_n_i_f_e_s_t::_m_k_m_a_n_i_f_e_s_t() for details)
  1158.  
  1159.       make distdir
  1160.           Copies all the files that    are in the MANIFEST file to a
  1161.           newly created directory with the name $(DISTNAME)-
  1162.           $(VERSION). If that directory exists, it will be removed
  1163.           first.
  1164.  
  1165.       make disttest
  1166.           Makes a distdir first, and runs a    perl Makefile.PL, a
  1167.           make, and    a make test in that directory.
  1168.  
  1169.       make tardist
  1170.           First does a distdir. Then a command $(PREOP) which
  1171.           defaults to a null command, followed by $(TOUNIX), which
  1172.           defaults to a null command under UNIX, and will convert
  1173.           files in distribution directory to UNIX format
  1174.           otherwise. Next it runs tar on that directory into a
  1175.           tarfile and deletes the directory. Finishes with a
  1176.           command $(POSTOP)    which defaults to a null command.
  1177.  
  1178.       make dist
  1179.           Defaults to $(DIST_DEFAULT) which    in turn    defaults to
  1180.           tardist.
  1181.  
  1182.  
  1183.  
  1184.  
  1185.      Page 18                        (printed 10/23/98)
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  1193.  
  1194.  
  1195.  
  1196.       make uutardist
  1197.           Runs a tardist first and uuencodes the tarfile.
  1198.  
  1199.       make shdist
  1200.           First does a distdir. Then a command $(PREOP) which
  1201.           defaults to a null command. Next it runs shar on that
  1202.           directory    into a sharfile    and deletes the    intermediate
  1203.           directory    again. Finishes    with a command $(POSTOP) which
  1204.           defaults to a null command.  Note: For shdist to work
  1205.           properly a shar program that can handle directories is
  1206.           mandatory.
  1207.  
  1208.       make zipdist
  1209.           First does a distdir. Then a command $(PREOP) which
  1210.           defaults to a null command. Runs $(ZIP) $(ZIPFLAGS) on
  1211.           that directory into a zipfile. Then deletes that
  1212.           directory. Finishes with a command $(POSTOP) which
  1213.           defaults to a null command.
  1214.  
  1215.       make ci
  1216.           Does a $(CI) and a $(RCS_LABEL) on all files in the
  1217.           MANIFEST file.
  1218.  
  1219.       Customization    of the dist targets can    be done    by specifying
  1220.       a hash reference to the dist attribute of the    WriteMakefile
  1221.       call.    The following parameters are recognized:
  1222.  
  1223.           CI       ('ci    -u')
  1224.           COMPRESS       ('gzip --best')
  1225.           POSTOP       ('@ :')
  1226.           PREOP       ('@ :')
  1227.           TO_UNIX       (depends on the system)
  1228.           RCS_LABEL       ('rcs -q -Nv$(VERSION_SYM):')
  1229.           SHAR       ('shar')
  1230.           SUFFIX       ('.gz')
  1231.           TAR       ('tar')
  1232.           TARFLAGS       ('cvf')
  1233.           ZIP       ('zip')
  1234.           ZIPFLAGS       ('-r')
  1235.  
  1236.       An example:
  1237.  
  1238.           WriteMakefile( 'dist' => { COMPRESS=>"bzip2", SUFFIX=>".bz2" })
  1239.  
  1240.  
  1241.       DDDDiiiissssaaaabbbblllliiiinnnngggg aaaannnn eeeexxxxtttteeeennnnssssiiiioooonnnn
  1242.  
  1243.       If some events detected in _M_a_k_e_f_i_l_e._P_L imply that there is
  1244.       no way to create the Module, but this    is a normal state of
  1245.       things, then you can create a    _M_a_k_e_f_i_l_e which does nothing,
  1246.       but succeeds on all the "usual" build    targets.  To do    so,
  1247.       use
  1248.  
  1249.  
  1250.  
  1251.      Page 19                        (printed 10/23/98)
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  1259.  
  1260.  
  1261.  
  1262.          ExtUtils::MakeMaker::WriteEmptyMakefile();
  1263.  
  1264.       instead of _W_r_i_t_e_M_a_k_e_f_i_l_e().
  1265.  
  1266.       This may be useful if    other modules expect this module to be
  1267.       _b_u_i_l_t    OK, as opposed to _w_o_r_k OK (say,    this system-dependent
  1268.       module builds    in a subdirectory of some other    distribution,
  1269.       or is    listed as a dependency in a CPAN::Bundle, but the
  1270.       functionality    is supported by    different means    on the current
  1271.       architecture).
  1272.  
  1273.      SSSSEEEEEEEE AAAALLLLSSSSOOOO
  1274.       ExtUtils::MM_Unix, ExtUtils::Manifest, ExtUtils::testlib,
  1275.       ExtUtils::Install, ExtUtils::Embed
  1276.  
  1277.      AAAAUUUUTTTTHHHHOOOORRRRSSSS
  1278.       Andy Dougherty <_d_o_u_g_h_e_r_a@_l_a_f_c_o_l._l_a_f_a_y_e_t_t_e._e_d_u>, Andreas
  1279.       Koenig <_A._K_o_e_n_i_g@_f_r_a_n_z._w_w._T_U-_B_e_r_l_i_n._D_E>, Tim Bunce
  1280.       <_T_i_m._B_u_n_c_e@_i_g._c_o._u_k>.     VMS support by    Charles    Bailey
  1281.       <_b_a_i_l_e_y@_g_e_n_e_t_i_c_s._u_p_e_n_n._e_d_u>.    OS/2 support by    Ilya
  1282.       Zakharevich <_i_l_y_a@_m_a_t_h._o_h_i_o-_s_t_a_t_e._e_d_u>.  Contact the
  1283.       makemaker mailing list mailto:makemaker@franz.ww.tu-
  1284.       berlin.de, if    you have any questions.
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.      Page 20                        (printed 10/23/98)
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.      EEEExxxxttttUUUUttttiiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeee2222rrrr3333((((////3333OOOO))))cccctttt////99998888    ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttccccEEEEhhhhxxxxtttt0000UUUU2222tttt))))iiiillllssss::::::::MMMMaaaakkkkeeeeMMMMaaaakkkkeeeerrrr((((3333))))
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.      Page 21                        (printed 10/23/98)
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.